package homework.day01;

import java.util.Random;
import java.util.Scanner;

/**
 * 生成一个4位验证码(数字和字母的组合)
 * 然后输出到控制台并提示用户输入该验证码，只要用户输入正确(无论大小写都算)，
 * 就输出:验证码正确，否则输出:验证码错误
 * 验证码如何生成?
 * 思路导向填空:
 * 1:要先确定生成的内容范围(列出所有可以出现的字符):
 * 2:先思考如何生成其中的一个字符呢？
 * 2.1:确定怎么保存这些可以出现的字符:
 * 2.2:怎么能随机抽选一个
 * 3:既然可以生成一个，如何做到生成4个或更多个?
 * 4:怎么在生成这些字符的过程中将他们组成一个字符串?
 * 5:获取到用户输入的字符串后怎么与之比较,要利用到哪些字符串操作?
 * @author XingHaiYang
 * @date 2022/9/6 20:39
 */
public class Test06 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);// 创建键盘扫描器
		System.out.println("请输入验证码:");// 提示语
		String input = scanner.nextLine(); // 接收用户输入的数据
		// 确定生成的字符内容范围(列出所有可以出现的字符)
		String line = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		Random random = new Random();// 定义一个随机数，以方便随机获取字符串中的一个随机字符的下标
		String code = "";// 定义存放随机验证码的字符串，并赋初值为空串
		for(int i=0;i<4;i++) {// 循环4次，以得到一个4个字符的字符串
			int index = random.nextInt(line.length());// 随机获取字符串中的一个随机字符的下标
			char c = line.charAt(index);// 通过下标得到具体的字符
			code+=c;//将每次得到的字符进行拼接
		}
		if(code.equalsIgnoreCase(input)){// 判断随机生成的字符串是否与用户输入的字符串相同
			System.out.println("验证成功!");// 相同，打印验证成功
		}else{
			System.out.println("验证失败!");// 不相同，打印验证失败
		}
		System.out.println("验证码:"+code);// 将验证码输出到控制台
	}
}





